基于统一生成框架的解决各种NER子任务

您所在的位置:网站首页 指针 菜鸟 基于统一生成框架的解决各种NER子任务

基于统一生成框架的解决各种NER子任务

2023-04-10 04:13| 来源: 网络整理| 查看: 265

原文地址

代码地址

摘要

根据实体是否是嵌套或者非连续,NER任务可以分为3类

扁平NER嵌套NER非连续NER

这些任务通常通过【序列标记】或【片段分类】来解决。但是这些解决方案难以同时处理这三种子任务。

为此,本文提出将NER任务看做是【实体跨度序列生成任务】,可以通过seq2seq 模型来解决。本文使用了预训练的BART模型来增强识别能力。

本文使用了3种实体表示方法,分别是词汇表示,BPE表示和跨度表示。

提出的方法在8个数据集实现了SOTA或者接近SOTA效果。其中包括个2扁平数据集,3个嵌套NER数据集和3个不连续NER数据集。

本文主要工作

本文提出带有指针机制的seq2seq 框架,直接生成实体序列。模型输入句子,输出代表实体索引序列。

无论是扁平的实体,嵌套实体还是非连续实体,都可以表示为【实体指针索引序列】。这样就可以实现用统一的方式处理不同的NER子任务,包括【交叉结构实体】和【多类型实体】。

【交叉结构实体】指的是对于一个句子片段ABCD,ABC和BCD都是实体。

【多类型实体】指的是一个实体可以有多个类型,比如蛋白质可以被标注为药物和化合物。

本文的贡献主要包括:

NER看做实体指针索引序列生成任务,来统一解决三个NER子任务。将BART整合到模型中,并使用3种实体表示,将实体转换为序列8个数据集实现了SOTA或者接近SOTA效果。其中包括个2扁平数据集,3个嵌套NER数据集和3个不连续NER数据集。以往工作NER

命名实体识别(Named Entity Recognition)就是从句子中识别代表实体的跨度,比如人名,组织,单位等。NER中存在3种子任务:

扁平NER,它是最简单的NER任务。嵌套NER,一个实体中包括了另一个实体。ER,实体由非连续的片段组成。@传统解决方案

传统的解决方案是将NER看做【序列标记】任务或者【片段分类】任务。

【序列标记】

就是为句子中的每个token分配一个标签,这个标签就是实体类和标注体系的笛卡尔积。比如数据集包括4类实体,人物,组织,地区,时间,采用BIO标注框架,那么标签总个数就是9,包括每类实体的Begining 和 inside,再加上Other 标签。以人物PERSON为例,该类实体的标签通常写为B-PERSON和I-PERSON。

该方法广泛用于扁平NER任务中,也可以用于嵌套NER中。常见的有BIO和BIOES标注框架。

它的缺点是需要对不同的NER子任务设计不同的标记模式,也就是说一个标记模式难以通用于上面的3个子任务中。

【片段分类】

片段分类就是列举句子所有可能的片段,并对其进行分类。这种方法经常用嵌套非连续NER任务中。这类方法的主要不同就在于如何获取片段。最简单的方法是使用枚举,列出所有可能的跨度,但是其时间复杂度过高。

它的缺点是

时间复杂度高,使用时通常要设置一个限制生成片段的最大长度。无法枚举非连续实体的片段,因此无法用于非连续NER中,

【超图】可以表示文本的所有片段。缺点是存在伪结构问题,推理过程中存在结构歧义问题,且解码相当复杂。

提出的方法

前文已经介绍过,本文将NER任务看做实体指针索引序列生成任务。也就是,模型的输入依然是句子,但是输出的是指针索引序列。那具体的过程是什么样的?接下来我们进行具体介绍。

指针索引序列生成

首先,将NER任务进行重新的表述。模型的输入是句子 X=[x_1,...,x_n] ,要生成的目标序列是 Y=[s_{11},e_{11},s_{1j},e_{1j},t_1, ....,s_{i1},e_{i1},s_{ik},e_{1k},t_i ] 。其中s,e 分别代表跨度的开始索引和结束索引。由于一个实体可能包含一个跨度或多个跨度,因此每个实体都被表示为 [s_{i1},e_{i1},s_{ik},e_{1k},t_i] ,其中 t_i 是实体的标签索引。 G=[g1,...,g_l ] 代表所有的实体标签, l 代表标签个数,为了分清指针索引和标签索引 t_i , t_i 的范围为 (n,n+l] 。

模型架构

由于将NER看做生成任务,因此可以使用将整个NER任务看做

P(Y \mid X)=\prod_{t=1}^m P\left(y_t \mid X, Y_{

可以看出,模型主要包括两部分:

编码器

编码器,这部分和Transformer的编码器几乎完全一致。编码器的主要作用就是将输入X编码为向量$H_e$

解码器

解码器,它的作用是为了得到每一步的概率分布,解码器部分参考Transformer 解码器即可。

由于输出的索引中包括跨度的指针索引和标签索引,因此需要进行【Index2Token】的转换,就是将输出的索引转换为对应输入的句子token或标签名称。

Index2Token 转换遵循以下公式:

\hat{y}_t= \begin{cases}X_{y_t}, & \text { if } y_t \leq n \\ G_{y_t-n}, & \text { if } y_t>n\end{cases}

对于每个输出,如果不大于n,索引表示的是跨度,转换为句子中的token,如果大于n,索引代表的是实体标签。

实体表示

模型使用的基本架构是BART,它使用了BPE表示token,也就意味着一个token可以表示为几个字节对编码(Byte Pair Encoding)BPE。在这里提出3种基于指针的实体表示,分别是

基于跨度的实体表示,一个实体被表示为实体的第一个BPE的开始索引和最后一个跨度的结束索引。如果实体包含多个不连续的跨度,则每个跨度都以相同的方式表示。基于BPE的实体表示,实体表示为它所包含的所有BPE的位置索引。基于词的实体表示,实体表示为它所包含的每个词的第一个BPE的开始索引。

对于以上的三种方式,在生成序列中都将实体的标记附加到实体表示中。具体的例子如下图所示

输入的句子 X=[x_1,x_2,x_3,x_4,x_5] ,由5个token组成。句子中包含3个实体,分别用不同颜色的框标出。其中 [x_1,x_3] 是PER类,是一个非连续实体。 [x_1,x_2,x_3,x_4] 是LOC 类,它是一个嵌套实体, [x_4] 是ORG 组织类别。

在经过BPE后, x_1 表示为3个BPE,整个句子被表示为8个BPE。因此,索引范围为0~7。以第一个实体 [x_1,x_3] 为例,第一个BPE的开始索引是0, 结束索引是2,第二个BPE的开始索引为5,结束索引也是5,实体标签为PER,则表示为[0,2,5,5,PER]。

实验

提出的方法在8个数据集实现了SOTA或者接近SOTA效果。其中包括个2扁平数据集,3个嵌套NER数据集和3个不连续NER数据集。

扁平NER数据集

【CoNLL-2003】包括德语和英语两种语言,其中英语部分有23,499个句子,分为训练集,测试集合验证集。数据集中标注了4种实体类型:PER(人名),LOC(地名),ORG(组织名),MISC(其他)。

【OntoNotes5】数据量大约是1.8M个句子,包含了三种语言和多个领域的文本1。OntoNotes 5.0有18种实体类型,包括人名、地名、组织名、时间、数量等。

嵌套NER数据集

【ACE2004】包含了英文、阿拉伯文和中文的培训数据。这些数据来自不同的类型,如广播新闻、网络日志等,对实体和关系进行了注释。其中,大约30%的句子含有嵌套实体。

【ACE2005】同样包括3种语言的训练数据。

【Genia】是一个生物学领域的数据集,包含了五种实体类型,分别是DNA、RNA、蛋白质、细胞系和细胞类型。其中,大约17%的句子含有嵌套实体。

非连续NER数据集

【CADEC】数据集来自于关于患者报告的药物不良事件(ADE)语料库。它包含了1250个患者报告,其中有1647个ADE实体,分为12种子类型。ADE实体中有一部分是非连续的,即由多个不相邻的片段组成。这种非连续性给命名实体识别任务带来了额外的挑战。

【ShARe14】数据集是关于临床实体识别的数据集.

实验设置使用BART-Large 模型不使用其他的Embedding使用实体级别的F1分数作为评估实验结果在扁平NER任务上取得了SOTA效果。在嵌套NER任务上取得了近似SOTA效果。在非连续NER数据集上取得了SOTA效果。实验二

比较提出的3种实体表示方法对效果的影响。结果显示,【基于词的实体表示几乎在所有数据集上实现了更好的效果。】

为了探索背后的原因,分别计算3种实体表示方式中实体的平均长度和中位数长度。结果表示,对于生成式框架来说,【实体表示长度越短,效果越好】。

总结

本文主要是将NER任务看做生成跨度索引的任务,在不同的NER子任务上都得到了不错的效果。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3